{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "ML-StackingFaults.ipynb",
      "provenance": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/AndySAnker/ML-MotEx/blob/main/StackingFaults/ML_StackingFaults.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Welcome to ML-MotEx\n",
        "Github: https://github.com/AndySAnker/ML-MotEx/tree/main/StackingFaults\n",
        "\n",
        "Paper: Characterisation of intergrowth in metal oxide materials using structure-mining: the case of γ-MnO2 https://pubs.rsc.org/en/content/articlelanding/2022/dt/d2dt02153f\n",
        "\n",
        "Questions: andy@chem.ku.dk & nima@chem.ku.dk\n",
        "\n",
        "Use this script to use ML-MotEx to extract a stacking fault distribution from a dataset. This script does both handle fits made on Pair Distribution Function (PDF) data and Powder X-ray Diffraction (PXRD) data.\n",
        "\n",
        "The script first import packages and defines functions.\n",
        "\n",
        "Section 1: We import the stacking fault sequences, stacking probabilities, volume fraction of the parent structures and their Rwp values. The following figure illustrates the data format.\n",
        "\n",
        "![](https://github.com/AndySAnker/ML-MotEx/blob/main/StackingFaults/Images/Image1.png?raw=true)\n",
        "\n",
        "Note: In the case of the study of γ-MnO2 intergrowth, the asymmetric units sequence and stacking faults sequence are different. We have therefore added both to the training dataset. They may be the same, e.g. in the case of a layered system.\n",
        "\n",
        "Section 2: We train a gradient boosted decision tree to predict the Rwp value from the stacking fault sequences, stacking probabilities and volume fraction of the parent structures.\n",
        "\n",
        "Section 3: We plot the importance of the blocks, stacking probabilities and volume fraction of the parent structures and why they are important. Do the model like specific blocks?\n",
        "\n",
        "Section 4: We extract the information into two lists, \"rather be ramsdellite (R-MnO2)/pyrolusite (β-MnO2) block\". We calculate the stacking fault domains size distribution.\n",
        "\n",
        "# Import modules and set seed parameters"
      ],
      "metadata": {
        "id": "T11_1lqswfhy"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "jFc0SvpzwVOs"
      },
      "outputs": [],
      "source": [
        "%%capture\n",
        "!pip install shap\n",
        "!git clone https://github.com/AndySAnker/ML-MotEx.git\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import time, random, shap, sklearn, os\n",
        "import xgboost as xgb\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.metrics import mean_squared_error\n",
        "random.seed(14)\n",
        "np.random.seed(14)\n",
        "os.chdir(\"ML-MotEx/StackingFaults\")"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Define functions"
      ],
      "metadata": {
        "id": "1_bEsFKNwph2"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "def Train_XGBoost_XY(X_train, y_train, learning_rate, max_depth, n_estimators, n_jobs, gamma, min_child_weight, base_score, seed, xgb_model=None):\n",
        "    start_time = time.time()\n",
        "    model = xgb.XGBRegressor(learning_rate = learning_rate, max_depth=max_depth, n_estimators=n_estimators, n_jobs=n_jobs, gamma=gamma, min_child_weight=min_child_weight, base_score=base_score, random_state=seed)\n",
        "    model.fit(X_train, y_train, xgb_model=xgb_model)\n",
        "    print(\"Total execution time: %.3fs\"%(time.time()-start_time))\n",
        "    print (\"Training Succeeded\")\n",
        "    return model\n",
        "    \n",
        "def Validate_XGBoost(model, X_val, y_val):\n",
        "    print (\"Giving an estimate of the accuracy of the model\")\n",
        "    y_pred_val = model.predict(X_val)\n",
        "    rmse = np.sqrt(mean_squared_error(y_val, y_pred_val))\n",
        "    print(\"RMSE: %f\" % (rmse))\n",
        "    return rmse\n",
        "\n",
        "def shap_essential_figure(model, X_train):\n",
        "    plt.clf()\n",
        "    explainer = shap.TreeExplainer(model)\n",
        "    shap_values = explainer.shap_values(X_train) #to explain every prediction\n",
        "    shap.summary_plot(shap_values, X_train, feature_names=names[2:], max_display=20, show=False) # to plot these explanations\n",
        "    return explainer, shap_values"
      ],
      "metadata": {
        "id": "k-S189yBwptQ"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# 1 Import data ready for machine learning"
      ],
      "metadata": {
        "id": "vEarwab-wudE"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fileName = \"Training_Data/info_Intergrowth_ML_XRD_Diamond2h.txt\"\n",
        "Layers = 250\n",
        "\n",
        "names = ['index', 'Rwp', 'Pb', 'Pr', 'percent_B', 'percent_R']+['Block_sequence'+str(i) for i in range(1, Layers+1)]+['Intergrowth_sequence'+str(i) for i in range(1, Layers+1)]\n",
        "data = pd.read_csv(fileName, names=names, delimiter=\" \") # Read data file\n",
        "data = data.drop(data.columns[-1],axis=1) # Drop the last column with NANS\n",
        "data = data.drop(data.columns[0],axis=1) # Drop index\n",
        "data = data.replace(['P','R'], [0, 1]) # 0 is P, 1 is R\n",
        "\n",
        "y = data['Rwp'] # Rwp is labels\n",
        "X = data.drop(data.columns[0], axis=1) # Drop labels\n",
        "\n",
        "X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2) # Split the data into training and validation set"
      ],
      "metadata": {
        "id": "Q_22ahqqwuwE"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Check that data is imported correct\n",
        "Check 1: Is the number of training data 4 times larger than validation data?\n",
        "\n",
        "Check 2: Print y_train and make sure it is the Rwp values of the fits.\n",
        "\n",
        "Check 3: Print X_train and make sure that the first 5 entries are index, Pb, Pr, percent_B, percent_R. The next should be Block_sequence0, Block_sequence1, etc... the last should be Intergrowth_sequence0, Intergrowth_sequence1, etc..."
      ],
      "metadata": {
        "id": "xDYr_9WLw1gj"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Check 1\n",
        "print (\"Number of Training Data:\", len(X_train))\n",
        "print (\"Number of Validation Data:\", len(X_val))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "LG4_GhE0w1tx",
        "outputId": "e9f979fe-22b2-4763-ceb7-e420217145cf"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Number of Training Data: 3960\n",
            "Number of Validation Data: 990\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Check 2\n",
        "print (y_train.head())\n",
        "print ()\n",
        "print (\"Stastical information about the Rwp distribution\")\n",
        "print (y_train.describe())"
      ],
      "metadata": {
        "id": "MmVtY9srw5eU",
        "outputId": "f5cc4b24-edb2-48a0-e274-1085a3101c29",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "634     15.24904\n",
            "2571    13.62155\n",
            "3372    13.99128\n",
            "1463    14.55927\n",
            "1486    18.56308\n",
            "Name: Rwp, dtype: float64\n",
            "\n",
            "Stastical information about the Rwp distribution\n",
            "count    3960.000000\n",
            "mean       16.058357\n",
            "std         2.434773\n",
            "min        12.214000\n",
            "25%        14.086435\n",
            "50%        15.619260\n",
            "75%        17.753375\n",
            "max        26.120980\n",
            "Name: Rwp, dtype: float64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Check 3\n",
        "X_train.head()"
      ],
      "metadata": {
        "id": "-37Fer86w8ER",
        "outputId": "a4e572e7-6b3e-4b9e-d481-56abaeea4e0b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 299
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "        Pb    Pr  percent_B  percent_R  Block_sequence1  Block_sequence2  \\\n",
              "634   0.13  0.84   0.155340   0.844660                1                2   \n",
              "2571  0.52  0.71   0.376623   0.623377                1                1   \n",
              "3372  0.68  0.72   0.466667   0.533333                1                1   \n",
              "1463  0.30  0.63   0.345794   0.654206                1                2   \n",
              "1486  0.30  0.86   0.166667   0.833333                1                1   \n",
              "\n",
              "      Block_sequence3  Block_sequence4  Block_sequence5  Block_sequence6  ...  \\\n",
              "634                 2                1                2                1  ...   \n",
              "2571                1                1                2                1  ...   \n",
              "3372                2                2                2                2  ...   \n",
              "1463                1                2                1                1  ...   \n",
              "1486                2                1                1                2  ...   \n",
              "\n",
              "      Intergrowth_sequence240  Intergrowth_sequence241  \\\n",
              "634                         1                        1   \n",
              "2571                        0                        1   \n",
              "3372                        1                        1   \n",
              "1463                        0                        1   \n",
              "1486                        1                        1   \n",
              "\n",
              "      Intergrowth_sequence242  Intergrowth_sequence243  \\\n",
              "634                         1                        0   \n",
              "2571                        1                        1   \n",
              "3372                        1                        1   \n",
              "1463                        0                        1   \n",
              "1486                        1                        1   \n",
              "\n",
              "      Intergrowth_sequence244  Intergrowth_sequence245  \\\n",
              "634                         1                        1   \n",
              "2571                        1                        1   \n",
              "3372                        1                        1   \n",
              "1463                        0                        1   \n",
              "1486                        1                        1   \n",
              "\n",
              "      Intergrowth_sequence246  Intergrowth_sequence247  \\\n",
              "634                         1                        1   \n",
              "2571                        0                        0   \n",
              "3372                        1                        1   \n",
              "1463                        1                        0   \n",
              "1486                        1                        1   \n",
              "\n",
              "      Intergrowth_sequence248  Intergrowth_sequence249  \n",
              "634                         1                        0  \n",
              "2571                        0                        0  \n",
              "3372                        1                        0  \n",
              "1463                        0                        1  \n",
              "1486                        1                        1  \n",
              "\n",
              "[5 rows x 503 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-2dc0dbe1-ab9d-45a2-a5db-7f9ba3897a27\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Pb</th>\n",
              "      <th>Pr</th>\n",
              "      <th>percent_B</th>\n",
              "      <th>percent_R</th>\n",
              "      <th>Block_sequence1</th>\n",
              "      <th>Block_sequence2</th>\n",
              "      <th>Block_sequence3</th>\n",
              "      <th>Block_sequence4</th>\n",
              "      <th>Block_sequence5</th>\n",
              "      <th>Block_sequence6</th>\n",
              "      <th>...</th>\n",
              "      <th>Intergrowth_sequence240</th>\n",
              "      <th>Intergrowth_sequence241</th>\n",
              "      <th>Intergrowth_sequence242</th>\n",
              "      <th>Intergrowth_sequence243</th>\n",
              "      <th>Intergrowth_sequence244</th>\n",
              "      <th>Intergrowth_sequence245</th>\n",
              "      <th>Intergrowth_sequence246</th>\n",
              "      <th>Intergrowth_sequence247</th>\n",
              "      <th>Intergrowth_sequence248</th>\n",
              "      <th>Intergrowth_sequence249</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>634</th>\n",
              "      <td>0.13</td>\n",
              "      <td>0.84</td>\n",
              "      <td>0.155340</td>\n",
              "      <td>0.844660</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>2</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>1</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2571</th>\n",
              "      <td>0.52</td>\n",
              "      <td>0.71</td>\n",
              "      <td>0.376623</td>\n",
              "      <td>0.623377</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>1</td>\n",
              "      <td>...</td>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "      <td>0</td>\n",
              "      <td>0</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3372</th>\n",
              "      <td>0.68</td>\n",
              "      <td>0.72</td>\n",
              "      <td>0.466667</td>\n",
              "      <td>0.533333</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>2</td>\n",
              "      <td>2</td>\n",
              "      <td>2</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1463</th>\n",
              "      <td>0.30</td>\n",
              "      <td>0.63</td>\n",
              "      <td>0.345794</td>\n",
              "      <td>0.654206</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>...</td>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0</td>\n",
              "      <td>0</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1486</th>\n",
              "      <td>0.30</td>\n",
              "      <td>0.86</td>\n",
              "      <td>0.166667</td>\n",
              "      <td>0.833333</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>2</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>5 rows × 503 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2dc0dbe1-ab9d-45a2-a5db-7f9ba3897a27')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-2dc0dbe1-ab9d-45a2-a5db-7f9ba3897a27 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-2dc0dbe1-ab9d-45a2-a5db-7f9ba3897a27');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# 2 Train the gradient boosted decision tree algorithm\n",
        "The parameters can be changed in order to get the lowest possible root mean squared error (RMSE). Normally only learning rate and max_depth is changed. Max depth can only be changed as integers."
      ],
      "metadata": {
        "id": "_vdZ0b1IxARw"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lr = 0.25 # 0.1 is default - Boosting learning rate\n",
        "max_depth = 3 # 3 is default - Maximum tree depth for base learners.\n",
        "n_estimators = 100 # 100 is default - Number of trees to fit. \n",
        "n_jobs = 1 # 1 is default - Number of parallel threads used to run xgboost.\n",
        "gamma = 0 # 0 is default - Minimum loss reduction required to make a further partition on a leaf node of the tree.\n",
        "min_child_weight = 1 # 1 is default - Minimum sum of instance weight(hessian) needed in a child.\n",
        "base_score = 0.5 # 0.5 is default - The initial prediction score of all instances, global bias.\n",
        "random_state = 0 # 0 is default - seeding\n",
        "\n",
        "# Set up a ML algorithm based on the loaded permutations\n",
        "model = Train_XGBoost_XY(X_train, y_train, learning_rate=lr, max_depth=max_depth, n_estimators=n_estimators, n_jobs=n_jobs, gamma=gamma, min_child_weight=min_child_weight, base_score=base_score, seed=random_state)\n",
        "Validate_XGBoost(model, X_val, y_val)\n",
        "model.save_model(\"ML_algorithms/Stacking_faults_manual_model.dat\")"
      ],
      "metadata": {
        "id": "j9BnBTMmxAeQ",
        "outputId": "eb375851-8a79-41b9-d474-2c38c07ed0f6",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[09:05:42] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.\n",
            "Total execution time: 4.091s\n",
            "Training Succeeded\n",
            "Giving an estimate of the accuracy of the model\n",
            "RMSE: 0.909217\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# 3 Plot how important the features (atoms) are in the structure and why they are important"
      ],
      "metadata": {
        "id": "vdzC_Bk9xF86"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "explainer, shap_values = shap_essential_figure(model, X_train.values)"
      ],
      "metadata": {
        "id": "JH_rc78KxGIP",
        "outputId": "eb6f6f41-162d-4f60-88a4-42ca336a5e3c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 693
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 576x684 with 2 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# 4 Block Sequence"
      ],
      "metadata": {
        "id": "bNRLBYvTxJzy"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Calculate the layer contribution value for each layer\n",
        "Block_sequence_list = []\n",
        "for i in range(4, 4+1*Layers):\n",
        "    a_shap = np.sum((shap_values[np.where(X_train.values[:,i] == 2),i]))\n",
        "    b_shap = np.sum((shap_values[np.where(X_train.values[:,i] == 1),i]))\n",
        "    Block_sequence_list.append(a_shap - b_shap)\n",
        "\n",
        "lower_percentile = 0\n",
        "print (\"Asymmetric unit A Sequences:\", np.where((np.array(Block_sequence_list) < lower_percentile) & (np.array(Block_sequence_list) < 0)))\n",
        "print (\"Asymmetric unit B Sequences:\", np.where((np.array(Block_sequence_list) > lower_percentile) & (np.array(Block_sequence_list) > 0)))\n",
        "\n",
        "count_b = 0\n",
        "count_g = 0\n",
        "count_r = 0\n",
        "for i in range(Layers-1):\n",
        "    if Block_sequence_list[i] == 0:\n",
        "        color = \"k\"\n",
        "        label = \"Does not Matter\"\n",
        "        plt.plot(i, 0, \"o\", color=color, markersize=10, label=label if count_b == 0 else \"_nolegend_\")\n",
        "        count_b += 1\n",
        "    elif Block_sequence_list[i] < lower_percentile:\n",
        "        color = \"g\"\n",
        "        label = \"Does like Layer B\"\n",
        "        plt.plot(i, 0, \"o\", color=color, markersize=10, label=label if count_g == 0 else \"_nolegend_\")\n",
        "        count_g += 1\n",
        "    elif Block_sequence_list[i] > lower_percentile:\n",
        "        color = \"r\"\n",
        "        label = \"Does like Layer A\"\n",
        "        plt.plot(i, 0, \"o\", color=color, markersize=10, label=label if count_r == 0 else \"_nolegend_\")\n",
        "        count_r += 1\n",
        "\n",
        "# Plot the results\n",
        "plt.yticks([], [])\n",
        "plt.legend()\n",
        "plt.title(\"Block_sequence\")\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "LlC2vMKYxJ_e",
        "outputId": "34b61cd5-5546-4d4a-c912-48800b992a22",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 453
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Asymmetric unit A Sequences: (array([  1,   3,   6,   7,   8,  10,  11,  13,  14,  17,  19,  20,  23,\n",
            "        26,  28,  33,  36,  38,  40,  41,  44,  48,  59,  61,  64,  66,\n",
            "        67,  71,  72,  76,  80,  81,  83,  89,  96,  99, 102, 103, 104,\n",
            "       105, 109, 110, 116, 117, 122, 123, 124, 125, 127, 129, 139, 142,\n",
            "       144, 146, 148, 153, 161, 162, 163, 167, 169, 173, 175, 177, 179,\n",
            "       180, 184, 188, 190, 192, 195, 198, 199, 203, 207, 208, 210, 213,\n",
            "       216, 217, 220, 227, 228, 230, 233, 234, 236, 239, 240]),)\n",
            "Asymmetric unit B Sequences: (array([  4,  31,  46,  75,  77,  95, 101, 108, 112, 114, 130, 141, 165,\n",
            "       171, 176, 181, 185, 189, 204, 205, 232, 243, 248, 249]),)\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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l8GDB5OXl8dDDz3E6tWrmTlzJpMmTUq5rd/+9resWrWKgoIC3nzzTQoKChg2bBibN2+mqKgIgMcff5zx48cf1+01EveqOv300+nVq1edxxxEX9QVkSahpDzF222kuF5dnKjbbQQpKiri2muv5bnnnuP888+npKSE9957j5EjR1atk/hdvFQsWrSIRx99lKNHj7J79242btxIdnY2Y8eOZf78+YwbN44VK1Ywb948/vKXv3zj22vceeed/PznPycej5Obm8vChQuP+z5RKlAi0iRktMiguDyF2220aDq32wjStm1bzjjjDN555x3OP/98KisradeuHWvXrq3zGD7++GNmzpzJypUrad++PbfeemvVL5uPGzeOa665hpYtWzJy5EiaN29eL7fXiMViDB8+nLfeeuu4C5RO8YlIkzAmewyxZrXcbqNZjLHZTft2Gy1atOD5559n3rx5PP3002RmZtKjR4+qz32staxbty6ltg4ePEjr1q1p27YtX375Jfn5x65y7Ny5M507d2b69OmMGzcOqJ/ba1hreffdd+nZs2edtguid1Ai0iTcNeQunlj3RNLPoWJpMe68sGnfbgOcdyovv/wyV1xxBRkZGTz11FNMnDiR6dOnE4/HGT16NP369aux3dy5c3nhhReq/v3+++/Tv39/zj33XLp161Z16i7hpptuoqioqOrXxTt16vSNb6/xwAMPMH/+fOLxONnZ2XX6nCyMbrchIo0u5dttbM0n99lc4hXxaoUq1ixGLC3G4pGLGXG2ftE8VZMnT6Z///785Cc/abA+dbsNEflWGnH2CAomFJA3MI/M9EyamWZkpmeSNzCPggkFKk51MHDgQAoKChgzZkxjhxJKp/hEpEnp2aEns6+ezeyrdbuN47F69erGDqFWegclIiKRpAIlIiKRpAIlIiKRpAIlIk1LYSFMmgSZmdCsmfP3pEnOcvlWUYESkaYjPx+ys2HOHCguBmudv+fMcZbn63YbjSknJ+e4fz3CS1fxiUjTUFgIublQWlrzuXjc+ZObCwUF8A1+xSBxuw2Ar776ih//+MccPHiwQW658eqrrwLw9ddfn/C+6kNFRQVpaWnVlm3atImKigrefvttDh06lNLPItVG76BEpGmYNcspQsnE4/CAbrfh1VC321iwYAFjx47lyiuv5MUXX0w5vqSstSn/GThwoBURqW8b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w+BSah533r59xxdbAmIK2x+JfRHQb1Wut7jjd+d4ZVhsAWPetgdWWpiAuz84VpAS3+dt4YbfAihr0YKy0aNp9eyzcMEFAQGnJuwUX4P8koSIiEiYRvslCRERkW9CBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCJJBUpERCLJWGtTX9mYIuCTeui3I7CnHtr5Z6BcpUZ5Sp1ylTrlKjXHm6czrbWd/AvrVKDqizFmlbV2UIN33AQpV6lRnlKnXKVOuUrNicqTTvGJiEgkqUCJiEgkNVaBerSR+m2KlKvUKE+pU65Sp1yl5oTkqVE+gxIREamNTvGJiEgkqUCJiEgkNXiBMsYMN8Z8ZIzZZoz5VUP3H2XGmB3GmPXGmLXGmFXusg7GmKXGmK3u3+0bO87GYIz5b2PMV8aYDZ5lgbkxjj+4c6zAGDOg8SJveCG5mmqM+dydW2uNMVd7nvt3N1cfGWOuapyoG54xppsxZrkxZqMx5kNjzM/c5ZpXHknydOLnlLW2wf4AaUAhkAW0ANYB5zdkDFH+A+wAOvqWzQB+5T7+FfD7xo6zkXJzMTAA2FBbboCrgXzAABcCf2/s+COQq6nAzwPWPd89DtOBHu7xmdbYY2igPJ0ODHAftwG2uPnQvEotTyd8TjX0O6gLgG3W2u3W2nJgIXBtA8fQ1FwLPOE+fgK4rhFjaTTW2reAfb7FYbm5FphnHe8D7YwxpzdMpI0vJFdhrgUWWmuPWGs/BrbhHKffetba3dbaNe7jYmAT0AXNq2qS5ClMvc2phi5QXYDPPP/eSfKB/rOxwGvGmNXGmDx32anW2t3u4y+AUxsntEgKy43mWbDJ7qmp//acKlauAGNMd6A/8Hc0r0L58gQneE7pIolo+a61dgAwArjDGHOx90nrvH/W9wICKDe1+iPQE8gBdgOzGjec6DDGZABLgH+11h70Pqd5dUxAnk74nGroAvU50M3z767uMgGstZ+7f38FPI/ztvjLxGkE9++vGi/CyAnLjeaZj7X2S2tthbW2Evgzx065/FPnyhgTw3nRfcpa+5y7WPPKJyhPDTGnGrpArQTONsb0MMa0AEYDLzVwDJFkjGltjGmTeAxcCWzAyc8t7mq3AC82ToSRFJabl4Cb3auuLgQOeE7Z/FPyfVbyQ5y5BU6uRhtj0o0xPYCzgQ8aOr7GYIwxwGPAJmvt/Z6nNK88wvLUIHOqEa4IuRrnKpBC4D8a+wqVqPzBubJxnfvnw0RugJOB14GtwDKgQ2PH2kj5WYBzGiGOc077J2G5wbnK6mF3jq0HBjV2/BHI1ZNuLgrcF5DTPev/h5urj4ARjR1/A+bpuzin7wqAte6fqzWvUs7TCZ9T+qkjERGJJF0kISIikaQCJSIikaQCJSIikaQCJSIikaQCJSIikaQCJSIikaQCJSIikfT/AQ7KQ+YLw7QEAAAAAElFTkSuQmCC\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Intergrowth sequence"
      ],
      "metadata": {
        "id": "ecMWlyX3xOfT"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Calculate the layer contribution value for each layer\n",
        "Intergrowth_sequence_list = []\n",
        "for i in range(4+Layers, 4+2*Layers-1):\n",
        "    b_shap = np.sum((shap_values[np.where(X_train.values[:,i] == 1),i]))\n",
        "    r_shap = np.sum((shap_values[np.where(X_train.values[:,i] == 0),i]))\n",
        "    Intergrowth_sequence_list.append(b_shap - r_shap)\n",
        "\n",
        "lower_percentile = 0\n",
        "Pyr_blocks = np.where((np.array(Intergrowth_sequence_list) > lower_percentile) & (np.array(Intergrowth_sequence_list) > 0))[0]\n",
        "Ram_blocks = np.where((np.array(Intergrowth_sequence_list) < lower_percentile) & (np.array(Intergrowth_sequence_list) < 0))[0]\n",
        "print (\"R-MnO2 sequences:\", Ram_blocks)\n",
        "print (\"B-MnO2 Sequences:\", Pyr_blocks)\n",
        "\n",
        "count_b = 0\n",
        "count_g = 0\n",
        "count_r = 0\n",
        "for i in range(Layers-1):\n",
        "    if Intergrowth_sequence_list[i] == 0:\n",
        "        color = \"k\"\n",
        "        label = \"Does not Matter\"\n",
        "        plt.plot(i, 0, \"o\", color=color, marker=\"s\", markersize=10, label=label if count_b == 0 else \"_nolegend_\")\n",
        "        count_b += 1\n",
        "    elif Intergrowth_sequence_list[i] < lower_percentile:\n",
        "        color = \"dodgerblue\"\n",
        "        label = \"Does like R\"\n",
        "        plt.plot(i, 0, \"o\", color=color, marker=\"s\", markersize=10, label=label if count_g == 0 else \"_nolegend_\")\n",
        "        count_g += 1\n",
        "    elif Intergrowth_sequence_list[i] > lower_percentile:\n",
        "        color = \"r\"\n",
        "        label = \"Does like b\"\n",
        "        plt.plot(i, 0, \"o\", color=color, marker=\"s\", markersize=10, label=label if count_r == 0 else \"_nolegend_\")\n",
        "        count_r += 1\n",
        "        \n",
        "# Plot the results\n",
        "plt.yticks([], [])\n",
        "plt.legend()\n",
        "plt.title(\"Intergrowth_sequence\")\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "7DgVLojzxOpb",
        "outputId": "480a0185-9079-4c24-f40f-f63b2a59ae0d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 471
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "R-MnO2 sequences: [ 10  12  19  24  31  33  34  39  42  46  54  59  60  61  68  70  72  73\n",
            "  78  80  82  83  86  87  90  93  94  98  99 101 104 105 106 107 110 112\n",
            " 113 115 117 118 119 120 121 123 126 127 130 132 133 134 137 138 139 140\n",
            " 141 143 145 152 158 160 162 163 166 168 171 175 178 180 182 183 186 188\n",
            " 192 193 198 199 200 201 204 206 209 211 216 217 221 222 225 226 229 230\n",
            " 231 233 234 237 239 242 243 244 246]\n",
            "B-MnO2 Sequences: [  1   2   4   6   7   9  11  20  21  23  28  32  36  37  40  41  43  51\n",
            "  53  58  64  65  66  79  81  84  85  88  92 100 108 116 122 124 125 128\n",
            " 131 146 147 153 154 155 167 169 172 174 176 184 197 202 203 207 210 212\n",
            " 214 220 224 228 240]\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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1dVat26dqqqqam8M7zVr1kydOnVSkyZN0mpPQAHw1rp169SqVSsVFBRo7x+uR0PjnFNlZaXWrVunrl27pvUYTvEB8FZVVZXatm1LOB0AzExt27bN6GiYgALgNcLpwJHpc0lAAWjQ8vPzZWa13vLz82tfGbxCQAFo0DZu3Fin7aIaNWqkwsJCnXDCCerTp4/uvvtu7dmzp/YHZsncuXP19ttvJ1xWUlIiM9Orr75aM++5556Tmenpp59Oud6SkhKtX7++5v69996rnTt31k3RaSKgACCF5s2bq6ysTO+9955eeeUVvfTSS7rllltyXVaNVAElSb169dITTzxRc3/mzJnq06dPreuti4DavXt3Ru2jCCgASFP79u310EMPacqUKXLOqaqqSr/61a/Uq1cv9e3bV3PmzJEUe2O+7rrr1L9/f/Xu3Vt/+ctfJEkbNmzQKaecosLCQvXs2VNvvPHGPtsoKCjQzTffrKKiIvXq1UsrVqyQJG3ZskUjRoxQ7969NWDAAC1btkxr1qzR1KlTNWnSJBUWFiZc36BBg7Rw4UJVV1dr+/btWrVqlQoLC2uW33rrrerfv7969uypK6+8Us45Pf300yotLdVFF12kwsJCTZ48WevXr9fgwYM1eHDsQsovv/yyBg4cqKKiIp1//vnavn17Tf3XX3+9ioqK9NRTT+1XfxNQAJCBo48+Wrt379amTZv0wAMPyMy0fPlyzZw5U5deeqmqqqr08MMP67DDDtOiRYu0aNEiTZs2TZ988okef/xxDR06VGVlZVq6dOleQRGWl5enJUuWaOzYsbrrrrskSTfffLP69u2rZcuW6bbbbtMll1yigoICjRkzRtdcc43Kyso0aNCgfdZlZjr99NP1z3/+U7Nnz9a555671/Lx48dr0aJFevfdd/X111/r+eef18iRI1VcXKwZM2aorKxMV199tTp27Kg5c+Zozpw5qqio0MSJE/Xqq69qyZIlKi4u1j333FOzzrZt22rJkiUaNWrUfvU1fwcFAN/Tm2++qauuukqSdNxxx6lLly5auXKlXn75ZS1btqzmc56vvvpKH330kfr376/LLrtM1dXVGjFiRNKAOu+88yRJ/fr106xZs2q29cwzz0iSfvrTn6qyslJbt25Nq85Ro0bpvvvu01dffaW7775bt912W82yOXPm6I477tDOnTu1ZcsWnXDCCTrnnHNSrm/+/Pl6//33dfLJJ0uSvvnmGw0cOLBm+QUXXJBWXbUhoAAgA6tXr1ajRo3Uvn37pG2cc7r//vs1dOjQfZbNmzdPL7zwgkaPHq1rr71Wl1xyyT5tmjZtKin2BY1vv/12v2s+8cQTtXz5crVo0ULHHntszfyqqiqNGzdOpaWl6ty5syZMmJDW3yk553TGGWdo5syZCZcfeuih+12zxCk+AEjb5s2bNWbMGI0fP15mpkGDBmnGjBmSpJUrV+rTTz9V9+7dNXToUD344IOqrq6uWbZjxw6tXbtWHTp00BVXXKHLL79cS5YsSXvb4W3NnTtXeXl5at26tVq1aqVt27bV+vjbb799ryMnSTVhlJeXp+3bt+/1zb7oesP3BwwYoLfeekurVq2SJO3YsUMrV65Me1/SxREUAKTw9ddfq7CwUNXV1WrcuLEuvvhiXXvttZKkcePGaezYserVq5caN26skpISNW3aVJdffrnWrFmjoqIiOefUrl07Pffcc5o7d67uvPNONWnSRC1bttT06dPTrmPChAm67LLL1Lt3b7Vo0UKPPvqoJOmcc87RyJEjNXv2bN1///0JP4eSpDPPPHOfeW3atNEVV1yhnj17Kj8/X/37969ZNnr0aI0ZM0bNmzfXO++8oyuvvFLDhg2r+SyqpKREv/zlL7Vr1y5J0sSJE/c6OqsL5pxLu3FxcbHjgoUAsuWDDz7Q8ccfn7JNJr9OkMn7HepHoufUzBY754qjbTnFB6BB69ChQ522gz84xQegQSsvL891CagnHEEBALxEQAEAvERAAQC8REABaNjy8yWz2m9cbqPBIaAANGzpXkajgVxu49RTT1X8z3nOOussffnll1qzZo169uz5vdY3YcKEmt/za2j4Fh8ApBC/3IYkbdq0SRdeeKG2bt2alUtuvPjii5KkL7/8st635SOOoAAgTdm43EZYQUGBKioq9pq3evVq9e3bV4sWLdLHH3+sYcOGqV+/fho0aFDNpTmili5dqoEDB6pbt26aNm1aHfREdnAEBQAZCF9u47HHHqu53MaKFSs0ZMgQrVy5UtOnT6+53MauXbt08skna8iQIZo1a5aGDh2qm266Sbt37874AoAffvihRo0apZKSEvXp00ennXaapk6dqm7dumnBggUaN26cXnvttX0et2zZMs2fP187duxQ3759dfbZZ6tjx4511SX1hoACgO+pvi63kcjmzZs1fPhwzZo1Sz169ND27dv19ttv6/zzz69pE/9dvKjhw4erefPmat68uQYPHqyFCxdqxIgR+7Hn2UFAAUAGsnG5jUQOO+wwHXXUUXrzzTfVo0cP7dmzR23atKn5fCyV6O8VZvL7hbnEZ1AAkKZcXm7jkEMO0bPPPqvp06fr8ccfV+vWrdW1a9eay6o757R06dKEj509e7aqqqpUWVmpuXPn7vWr5T7jCAoAUvDlchtS7EKAzz//vM444wy1bNlSM2bM0NixYzVx4kRVV1dr1KhR6tOnzz6P6927twYPHqyKigr9/ve/bxCfP0lcbgOAx9K53IYyOV3F5TZyjsttADh4pHsZDS630eBwig9Aw8blNg5YHEEBALxEQAEAvERAAQC8xGdQABq0ftOkijR+MSivhbT4ivqvB3WHIygADVo64ZRJu6iGfrmNkpIStWvXToWFhTruuOM0adKkuiy3XnEEBQApHAiX27jgggs0ZcoUVVZWqnv37ho5cqQ6d+5cFyXWK46gACBNDfVyG3Ft27bVMcccow0bNuxHL2QPR1AAkIGGeLmNuE8//VRVVVXq3bv3/nZDVhBQAPA9NZTLbTz55JOaN2+eVqxYoSlTpqhZs2b7sdfZQ0ABQAYa4uU24p9BlZaWasiQITr33HOVn5+f1nZzic+gACBNDfVyG3HFxcW6+OKLNXny5O/ZA9nFERQApHAgXG4j7Prrr1dRUZFuvPFGtWrV6nv3SzZwuQ0A3krnchtdMjgYWHv1fhaE/cblNgAcNPJa1G07+INTfAAaNH6+6MDFERQAr2XyMQT8lulzSUAB8FazZs1UWVlJSB0AnHOqrKzM6G+wOMUHwFudOnXSunXrtHnz5lyXgjrQrFkzderUKe32BBQAbzVp0kRdu3bNdRnIEU7xAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8REABALxEQAEAvERAAQC8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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Calculate the stacking fault distributions\n",
        "\n",
        "We only use the stacking faults sequence to calculate the domain size distributions."
      ],
      "metadata": {
        "id": "dcO6DmMnxTRZ"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "largest_possible_domain = 20 # Define the largest possible domain we are searching for\n",
        "DSD_pyr = np.zeros(largest_possible_domain)        #Number of B-MnO2 domains of a given size\n",
        "DSD_ram = np.zeros(largest_possible_domain)        #Number of R-MnO2 domains of a given size\n",
        "x_array_pyr = np.array([i*0.44 for i in range(largest_possible_domain)])  #Calculate physical size of B-MnO2 domains (in nm)\n",
        "x_array_ram = np.array([i*0.466 for i in range(largest_possible_domain)]) #Calculate physical size of R-MnO2 domains (in nm)\n",
        "\n",
        "#Determines size of domains of B-MnO2 blocks, first in number of blocks, and then in physical size\n",
        "block = 1\n",
        "for i in range(len(Pyr_blocks)-1):\n",
        "    if Pyr_blocks[i+1] == Pyr_blocks[i]+1:\n",
        "        block += 1\n",
        "    else:\n",
        "        DSD_pyr[block+1] += 1\n",
        "        block = 1\n",
        "vol_pyr = np.sum(DSD_pyr * x_array_pyr)\n",
        "DSD_pyr_vol = DSD_pyr * x_array_pyr / vol_pyr\n",
        "\n",
        "#Determines size of domains of R-MnO2 blocks, first in number of blocks, and then in physical size    \n",
        "block = 1 \n",
        "for i in range(len(Ram_blocks)-1):\n",
        "    if Ram_blocks[i+1]==Ram_blocks[i]+1:\n",
        "        block +=1\n",
        "    else:\n",
        "        DSD_ram[block+1] += 1\n",
        "        block = 1\n",
        "vol_Ram = np.sum(DSD_ram * x_array_ram)\n",
        "DSD_ram_vol = DSD_ram * x_array_ram / vol_Ram\n",
        "\n",
        "# Plot the stacking fault domain size distributions\n",
        "plt.plot(x_array_pyr, DSD_pyr_vol, color= 'r', label='B-MnO2 domains size distribution')\n",
        "plt.plot(x_array_ram, DSD_ram_vol, color='dodgerblue', label='R-MnO2 domains size distribution')\n",
        "plt.xlabel('Size [nm]')\n",
        "plt.ylabel('Frequency')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "WRlMt6yvxTxD",
        "outputId": "6e83827f-4c30-4a94-ce5b-2564ce986fea",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3xUZdbA8d8hhVBCaKFIS0B6SAKEJiYCYsCGYllxUQQFVlFXdlcUV18WWd3VV187igVFWBHLusiuKFYE112pUQFBKaElKBMpoaY97x93ZpxMZpJJMjczIef7+fBJ5s69d04GyJmnnUeMMSillKq76oU6AKWUUqGliUAppeo4TQRKKVXHaSJQSqk6ThOBUkrVcZGhDqCyWrZsaRISEkIdhlJK1Srr1693GGPifT1X6xJBQkIC69atC3UYSilVq4jIbn/PadeQUkrVcZoIlFKqjtNEoJRSdVytGyNQdVNhYSH79u3j1KlToQ5FqbAWExND+/btiYqKCvgaTQSqVti3bx+xsbEkJCQgIqEOR6mwZIwhLy+Pffv2kZiYGPB12jWkaoVTp07RokULTQJKlUNEaNGiRaVbzpoIVK2hSUCpilXl/4kmAruVlMD8+VBQEOpIlFLKJ00EdluzBiZPhmXLQh2JqqaIiAhSU1NJSUmhX79+fPnllz7Pmz17NiLC9u3b3ceeeOIJRCSgxZAvvPACPXr0oEePHgwcOJAvvvjC/dz48ePp3r07SUlJ3HjjjRQWFlZ4v2HDhtm6CDMnJ4errrrKlnuvW7eO3/72t0G95+zZs3n00UcBmDVrFh9//LHfc5cuXcqWLVv8Pj9v3jwWLlwIVP59Pnz4MM8++6z7sZ3vY0U0Edjtp5+srzt3hjYOVW0NGjQgKyuLr7/+mr/+9a/cc889fs/t06cPS5YscT9+66236N27d4Wv8a9//Yvnn3+eL774gq1btzJv3jx+/etfc+DAAcBKBFu3buXbb7/l5MmTvPTSS9X/warprLPO4u2337bl3mlpaTz11FO23Btgzpw5jBw50u/z5SWCoqIibr75ZiZMmFCl1/ZOBHa+jxXRRGA3h8P6mp0d0jBUcB09epRmzZr5ff7yyy/n3XffBWDHjh3ExcXRsmVL9/ONGzfm3nvvJSUlhcGDB/Pjjz8C8PDDD/PII4+4z+3Xrx833HADc+fOBeCiiy5CRBARBg4cyL59+8q89smTJxk3bhw9e/Zk7NixnDx50v3c66+/Tp8+fUhKSuLuu+8uFc+MGTPo3bs3I0eOZM2aNQwbNozOnTuzzNmazc7OJj09nX79+pVqEWVnZ5OUlATAggULuOKKKxg9ejRdu3blrrvuAqC4uJiJEyeSlJREnz59ePzxx8vE/dZbb5GUlERKSgoZGRkArFy5kksuucT9s6emppKamkpcXByvvvoqxcXFzJgxgwEDBpCcnMzzzz/v8+/jwQcfpFu3bpx77rls27bNfXzixInuX74zZ86kV69eJCcnc+edd/Lll1+ybNkyZsyYQWpqKjt27GDYsGFMnz6dtLQ0nnzyyVKtC4BFixaRmppKUlISa9asAShzTlJSEtnZ2cycOZMdO3aQmprKjBkzSr2Pp06dYtKkSfTp04e+ffvy2Weflfv+VpdOH7WbKxHs2hXaOM4k06dDVlZw75maCk88Ue4pJ0+eJDU1lVOnTpGbm8unn37q99wmTZrQoUMHNm3axLvvvss111zDK6+84n7++PHjDB48mAcffJC77rqLF198kfvuu4/NmzfTv3//UvdKS0vj1VdfLXWssLCQRYsW8eSTT5Z57eeee46GDRvy3Xff8c0339CvXz/A6nq4++67Wb9+Pc2aNSMzM5OlS5dy+eWXc/z4cUaMGMEjjzzC2LFjue+++/joo4/YsmULN9xwA2PGjKFVq1Z89NFHxMTE8MMPP3Dttdf67ArJyspi48aN1K9fn+7du3P77bfz008/sX//fjZt2gRYn4a9zZkzhxUrVtCuXTufzy9fvhyA9evXM2nSJC6//HLmz59PXFwca9eu5fTp0wwdOpTMzMxSUyfXr1/PkiVLyMrKoqioiH79+pV5j/Py8vjHP/7B1q1bEREOHz5M06ZNGTNmDJdcckmpLpuCggL3zz179uxS9zlx4gRZWVmsWrWKG2+80f3z+vLQQw+xadMmspz/lrM9PizOnTsXEeHbb79l69atZGZm8v333/t9fzt06OD3dQKhLQK75eVZX7VFUOu5uoa2bt3KBx98wIQJEyhvz+9x48axZMkSli5dytixY0s9Fx0d7f6k279//1K/BAIxbdo0MjIySE9PL/PcqlWruO666wBITk4mOTkZgLVr1zJs2DDi4+OJjIxk/PjxrFq1yh3P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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Cite\n",
        "If you use ML-MotEx to analyse the stacking fault domain size distribution, please consider citing our papers. Thanks in advance!\n",
        "```\n",
        "@article{anker2022ML-MotEx,\n",
        "   title = {Extracting Structural Motifs from Pair Distribution Function Data of Nanostructures using Explainable Machine Learning},\n",
        "   author = {Andy S. Anker, Emil T. S. Kjær, Mikkel Juelsholt, Troels Lindahl Christiansen, Susanne Linn Skjærvø, Mads Ry Vogel Jørgensen, Innokenty Kantor, Daniel R. Sørensen, Simon J. L. Billinge, Raghavendra Selvan, Kirsten M. Ø. Jensen},\n",
        "   journal = {npj Computational Materials},\n",
        "   volume = {8},\n",
        "   number = {1},\n",
        "   pages = {213},\n",
        "   ISSN = {2057-3960},\n",
        "   DOI = {10.1038/s41524-022-00896-3},\n",
        "   url = {https://doi.org/10.1038/s41524-022-00896-3},\n",
        "   year = {2022}}\n",
        "```\n",
        "\n",
        "```\n",
        "@article{magnard2022Intergrowth,\n",
        "   title = {Characterisation of intergrowth in metal oxide materials using structure-mining: the case of γ-MnO2},\n",
        "   author = {Nicolas P. L. Magnard, Andy S. Anker, Andrea Kirsch, Kirsten M. Ø. Jensen},\n",
        "   year = {2022}\n",
        "   publisher = {\"The Royal Society of Chemistry\"},\n",
        "   doi = {\"10.1039/D2DT02153F\"}}\n",
        "```\n",
        "\n",
        "# LICENSE\n",
        "This project is licensed under the Apache License Version 2.0, January 2004 - see the LICENSE file at https://github.com/AndySAnker/ML-MotEx/blob/main/LICENSE for details."
      ],
      "metadata": {
        "id": "sUpUz1VLzg_J"
      }
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "WMx2dzTO0mnw"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}